package com.bwie.Timer;

import cn.hutool.core.bean.BeanUtil;
import com.bwie.mapper.TbGiftMapper;
import com.bwie.mapper.TbGiftStrategyMapper;
import com.bwie.pojo.TbGift;
import com.bwie.pojo.TbGiftStrategy;
import com.bwie.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.IndexOperations;
import org.springframework.data.elasticsearch.core.document.Document;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Author: zhaijiaqi
 * @Date: 2025/7/15 15:36
 * @Description:
 **/
@Component
@Slf4j
public class giftTimer {

    @Autowired
    TbGiftMapper tbGiftMapper;

    @Autowired
    TbGiftStrategyMapper tbGiftStrategyMapper;

    @Autowired
    ElasticsearchRestTemplate elasticsearchRestTemplate;


 //   @Scheduled(cron = "0 0/1 * * * ?")
    public void getTimerAddStrate(){
        log.info("品牌礼金发放策略-定时发放品牌礼金（周六、周日），定时器开始发放");
        TbGiftStrategy tbGiftStrategy = new TbGiftStrategy();
        tbGiftStrategy.setGiftDesc("定时发放品牌礼金（周六、周日）");
        tbGiftStrategy.setGiftStatus(0);
        tbGiftStrategy.setGiftFrom(1);
        tbGiftStrategy.setGiftType(1);
        tbGiftStrategy.setCreateBy("管理员");
        tbGiftStrategy.setBeginTime(new Date());
        tbGiftStrategy.setEndTime(new Date());
        tbGiftStrategy.setDisPrice(new BigDecimal(5));
        tbGiftStrategy.setMinPrice(new BigDecimal(10));
        tbGiftStrategy.setGiftName("品牌礼金发放策略-定时发放品牌礼金");
        tbGiftStrategy.setCreateTime(new Date());
        tbGiftStrategyMapper.insert(tbGiftStrategy);
        TbGift tbGift = BeanUtil.toBean(tbGiftStrategy, TbGift.class);
        tbGiftMapper.insert(tbGift);

        //同步Es
        //查看是否有索引
        IndexOperations indexOps = elasticsearchRestTemplate.indexOps(TbGiftStrategy.class);
        boolean exists = indexOps.exists();
        if (!exists) {
            //创建索引
            indexOps.create();
            Document mapping = indexOps.createMapping();
            indexOps.putMapping(mapping);
        }
        List<TbGiftStrategy> tbGiftStrategies = tbGiftStrategyMapper.selectList(null);
        elasticsearchRestTemplate.save(tbGiftStrategies);
        log.info("品牌礼金发放策略-定时发放品牌礼金（周六、周日），定时器结束发放");

    }
}
